package com.ywj.bootredis.controller;

import cn.hutool.core.lang.hash.Hash;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.ywj.bootredis.config.RedisUtils;
import com.ywj.bootredis.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
public class UserRedisController {
    @Autowired
    private RedisUtils redisUtils;

    private final String object_redis_key = "user_1";

    @RequestMapping("/set")
    public String setData(){
        User user = new User();
        user.setId(1);
        user.setUsername("ywj");
        user.setPassword("12345");
        user.setCreateTime(new Date());
        //放入redis
        redisUtils.set(object_redis_key, user);
        return "存入redis成功，值为：" + user;
    }

    @RequestMapping("/saveHash")
    public String saveHash(Hash hash1){
        redisUtils.set("2", hash1);
        return "向redis中存入hash数据，值为：" + hash1;
    }

    @RequestMapping("/get")
    public String getData(String key){
        if(StringUtils.hasLength(key)) {
            Object obj = redisUtils.get(key);
            return "从redis中获取数据，key: " + key + ", value: " + obj;
        }
        return "redis中无此key，返回失败";
    }





//    private User user;

//    @Autowired
//    private StringRedisTemplate stringRedisTemplate;
//
//    /**
//     * 使用双重校验锁来构建一个单例User对象
//     * @return
//     */
//    public User getUser(){
//        if(user == null){
//            synchronized (this){
//                if(user == null){
//                    user = new User();
//                    user.setId(1);
//                    user.setUsername("ywj");
//                    user.setPassword("12345");
//                }
//            }
//        }
//        return user;
//    }

//    /**
//     * 将对象存储在redis中
//     * @return
//     *
//     */
//    public String setObj() throws JsonProcessingException {
//        User user = getUser();
//        String userStr = objectMapper.writeValueAsString(user);
//        stringRedisTemplate.opsForValue().set(object_redis_key,user);
//        return "user对象存储成功！";
//    }






}
